package com.example.exercises;

/**
 * 338. 比特位计数
 * 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ，计算其二进制数中的 1 的数目并将它们作为数组返回。
 * <p>
 * 示例 1:
 * <p>
 * 输入: 2
 * 输出: [0,1,1]
 **/
public class Solution338 {
    public static void main(String[] args) {
        Solution338 solution338 = new Solution338();
        System.out.println(solution338.countBits(5));
    }

    public int[] countBits(int num) {
        int[] bits = new int[num + 1];
        for (int i = 1; i <= num; i++) {
            int i1 = bits[i & (i - 1)] + 1;
            bits[i] = i1;

        }
        return bits;
    }
}



